$(function () {
    addInfoFormValidation();
    editInfoFormValidation();
    loadTree();
})
const title = ['#', '设备编号', '设备名称', '添加时间', '归属企业', '采集设备编号', '维保周期', '操作'];
const label = ['order', 'sn', 'name', 'createTime', 'ename', 'ceqNumber', 'maintenanceCycle', 'opera'];
var inst1;
var tree;

/*加载树*/
function loadTree() {
    showLoading(LOADING);
    layui.use('tree', function () {
        getJson(path, null, 'GET', function (result) {
            if (result['code'] == 200) {
                tree = layui.tree;
                //渲染
                inst1 = tree.render({
                    elem: '#typeListTree',
                    edit: opera,
                    limitNodeAddLevel: 2, //data中的rank字段与该值匹配时，节点操作无添加按钮
                    onlyIconControl: true,//仅允许节点左侧图标控制展开收缩
                    id: 'tree1',
                    data: buildTree(result['payload']['data'], path),
                    click: function (obj) {
                        findDeviceByDeviceType(undefined, obj['data']['id']);
                        //点击，在右侧展示该集合下所绑定的设备
                    },
                    customOperate: true,
                    operate: function (obj) {
                        var type = obj.type; //得到操作类型：add、edit、del
                        var data = obj.data; //得到当前节点的数据
                        var elem = obj.elem; //得到当前节点元素
                        //Ajax 操作
                        var id = data.id; //得到节点索引
                        if (type === 'add') { //增加节点
                            $("#addInfoForm")[0].reset();//清空表单
                            $("#addInfoForm").data('bootstrapValidator').destroy();
                            $('#addInfoForm').data('bootstrapValidator', null);
                            $('#validationCustom01').val(data.title);
                            $('#validationCustom03').val(data.id);
                            $('#validationCustom04').val(data.rank);
                            addInfoFormValidation();
                            $('#addInfoModal').modal();
                        } else if (type === 'update') { //修改节点
                            $("#editInfoForm").data('bootstrapValidator').destroy();
                            $('#editInfoForm').data('bootstrapValidator', null);
                            $("#editInfoForm")[0].reset();//清空表单
                            $('#type_ID').val(data.id);
                            $('#validationCustom11').val(data.title);
                            $('#editInfoModal').modal();
                            editInfoFormValidation();
                        } else if (type === 'del') { //删除节点
                            myConfirm('操作确认', '是否确认删除该集合？（请先删除集合下的子集合和绑定的设备）', function (res) {
                                if (res) {
                                    getJson('/deviceType/updateDeviceTypeById', {
                                        id: data.id,
                                        isDelete: 1,
                                        title: data.title
                                    }, 'POST', function (data) {
                                        if (data.code == 200) {
                                            myAlert("提示", "删除成功", function () {
                                                //可以重载所有基础参数
                                                getJson('/deviceType/selectDeviceTypeTree', null, 'GET', function (result) {
                                                    tree.reload('tree1', {
                                                        data: result['payload']['data']
                                                    });
                                                    $('#editInfoModal').modal('hide');
                                                    return;
                                                });
                                            })
                                        }
                                        myAlert("提示", data.message)
                                    })
                                }
                            });
                        }
                    }
                })
            }
            findDeviceByDeviceType(undefined, buildTree(result['payload']['data'], path)[0]['id']);
            hideLoading();
        })
    })
}

/**
 * 添加设备类型表单验证
 */
function addInfoFormValidation() {
    $('#addInfoForm').bootstrapValidator({
        feedbackIcons: {
            valid: 'fa fa-check',
            validating: 'fa fa-sync-alt'
        },
        fields: {
            title: {
                validators: {
                    stringLength: {
                        min: 2,
                        max: 25
                    },
                    notEmpty: {
                        message: '集合名称不能为空',
                    },
                    threshold: 2, //设置2字符以上开始请求服务器
                    //有待验证，备注以备下次使用。
                    //bootstrap的remote验证器需要的返回结果一定是json格式的数据 :
                    //{"valid":false} //表示不合法，验证不通过
                    //{"valid":true} //表示合法，验证通过
                    remote: {//发起Ajax请求。
                        url: '../deviceType/uniqueName',//验证地址
                        data: {
                            'methodType': 1,
                            'title': $('input[name="title"]').val(),
                        },
                        message: '集合名称已存在',//提示消息
                        delay: 1000,//设置2秒发起名字验证
                        type: 'POST' //请求方式
                    }
                }
            },
        }
    }).on('success.form.bv', function (e) {
        //防止表单提交
        e.preventDefault();
        //获取表单实例
        var $form = $(e.target);
        //获取BootstrapValidator实例
        var bv = $form.data('bootstrapValidator');
        ////使用Ajax提交表单数据
        getJson("/deviceType/insertDeviceType", $form.serialize(), "POST", function (data) {
            if (data.code == 200) {
                myAlert("提示", "保存成功", function () {
                    //可以重载所有基础参数
                    getJson('/deviceType/selectDeviceTypeTree', null, 'GET', function (result) {
                        tree.reload('tree1', {
                            data: result['payload']['data']
                        });
                        $('#addInfoModal').modal('hide');
                        return;
                    });
                })
            }
            myAlert("提示", data.message)
        })
    }).on('error.form.bv', function (e) { //点击提交验证失败之后
        $('[type="submit"]').removeAttr("disabled");
    });
}

/*修改设备类型表单验证*/
function editInfoFormValidation() {
    $('#editInfoForm').bootstrapValidator({
        feedbackIcons: {
            valid: 'fa fa-check',
            validating: 'fa fa-sync-alt'
        },
        fields: {
            title: {
                validators: {
                    stringLength: {
                        min: 2,
                        max: 25
                    },
                    notEmpty: {
                        message: '新集合名称不能为空',
                    },
                    threshold: 2, //设置2字符以上开始请求服务器
                    //有待验证，备注以备下次使用。
                    //bootstrap的remote验证器需要的返回结果一定是json格式的数据 :
                    //{"valid":false} //表示不合法，验证不通过
                    //{"valid":true} //表示合法，验证通过
                    remote: {//发起Ajax请求。
                        url: '../deviceType/uniqueName',//验证地址
                        data: {
                            'methodType': 2,
                            'title': $('input[name="title"]').val(),
                            'id': $('#type_ID').val()
                        },
                        message: '集合名称已存在',//提示消息
                        delay: 1000,//设置2秒发起名字验证
                        type: 'POST' //请求方式
                    }
                }
            },
        }
    }).on('success.form.bv', function (e) {
        //防止表单提交
        e.preventDefault();
        //获取表单实例
        var $form = $(e.target);
        //获取BootstrapValidator实例
        var bv = $form.data('bootstrapValidator');
        ////使用Ajax提交表单数据
        getJson('/deviceType/updateDeviceTypeById', $form.serialize(), 'POST', function (data) {
            if (data.code == 200) {
                myAlert("提示", "修改成功", function () {
                    //可以重载所有基础参数
                    getJson('/deviceType/selectDeviceTypeTree', null, 'GET', function (result) {
                        tree.reload('tree1', {
                            data: result['payload']['data']
                        });
                        $('#editInfoModal').modal('hide');
                        return;
                    });
                })
            }
            myAlert("提示", data.message)
        })
    }).on('error.form.bv', function (e) { //点击提交验证失败之后
        $('[type="submit"]').removeAttr("disabled");
    });
}


/*添加根元素*/
function addRootType() {
    $('#validationCustom03').val(0);
    $("#addInfoForm").data('bootstrapValidator').destroy();
    $('#addInfoForm').data('bootstrapValidator', null);
    $("#addInfoForm")[0].reset();//清空表单
    addInfoFormValidation();
    $('#validationCustom01').val('无');
    $('#addInfoModal').modal();
}

/*查看详情*/
function viewInfo(id) {
    /*根据ID查询信息*/
    getJson("/device/getProduceDeviceById", {id: id}, 'GET', function (result) {
        if (result.status == 200) {
            let data = result.data;
            $('#name-id').text(data.name);
            $('#sn-id').text(data.sn);
            $('#ename-id').text(data.ename);
            $('#ceqNumber-id').text(data.ceqNumber);
            $('#port-id').text(data.port);
            $('#maintenanceCycle-id').text(data.maintenanceCycle + "天");
            $('#minPrice-id').text(data.minPrice + '元/kWh');
            $('#maxPrice-id').text(data.maxPrice + '元/kWh');
            $('#avgPrice-id').text(data.avgPrice + '元/kWh');
            $('#maxU-id').text(data.maxU + 'V');
            $('#maxI-id').text(data.maxI + 'A');
            $('#maxC-id').text(data.maxC + 'kWh');
            $('#standardU-id').text(data.standardU + 'V');
            $('#standardI-id').text(data.standardI + 'A');
            $('#standardC-id').text(data.standardC + 'kWh');
            $('#standardPower-id').text(data.standardPower + "kW");
            $('#createTime-id').text(getDate(data.createTime).datetime());
            $('#qddl').text(data.iah + 'kW');
            // $('#djdl').text(data.ial + 'A');
            $('#dlb').text(data['currentRatio']);
            let deviceType = '';
            if (data['typeOneName']) {
                deviceType += data['typeOneName'];
                if (data['typeTowName']) {
                    deviceType += '/' + data['typeTowName'];
                    if (data['typeThreeName']) {
                        deviceType += '/' + data['typeThreeName'];
                    }
                }
            }
            $('#deviceType').text(deviceType);

            if (!isNull(data.image)) {
                $('#logo-id').attr('src', fileUrl + data.image);
                $('#logo-id')[0].onerror = function () {//加载出错时，替换为默认图
                    $(this).attr('src', '../customize/images/device-img.png');
                }
            } else {//无图片加载默认图
                $('#logo-id').attr('src', '../customize/images/device-img.png');
            }
        } else {
            myAlert("提示", "加载设备数据失败");
        }
    })
    $('#viewInfoModal').modal()
}

/*根据设备类型加载设备列表*/
function findDeviceByDeviceType(_pageIndex, e) {
    let deviceType = e;
    showLoading(LOADING);
    let pageIndex = parseInt(_pageIndex ? _pageIndex : '1');
    getJson('/device/getDeviceByDeviceType', {
        deviceType: e,
        pageIndex: pageIndex,
        pageSize: 10
    }, 'GET', function (result) {
        if (result['code'] == 200) {
            let data = result['payload']['data'];
            if (data.length > 0) {
                let dd = data[0];
                let dt = '';
                if (dd['typeOneName']) {
                    dt += dd['typeOneName'];
                    if (dd['typeTowName']) {
                        dt += '/' + dd['typeTowName'];
                        if (dd['typeThreeName']) {
                            dt += '/' + dd['typeThreeName'];
                        }
                    }
                }
                $('#deviceType_text').text(dt);
            }
            setPage($('#page'), pageIndex, result['payload']['pages'], result['payload']['total'], function (num) {
                findDeviceByDeviceType(num, deviceType);
            });
            let order = 1 + 10 * (pageIndex - 1);
            for (let item of data) {
                item['order'] = order++;
            }
            for (let item of data) {
                item['createTime'] = getDate(item['createTime']).datetime();
            }
            buildTable($('#device-List'), title, label, data, function (td, label, item) {
                switch (label) {
                    case 'maintenanceCycle':
                        $(td).text(item[label] + '天');
                        break;
                    case 'opera':
                        let info = createElement('a', td, '详情', null);
                        $(info).attr('href', '##');
                        $(info).click(function () {
                            viewInfo(item['id']);
                        });
                        break;
                }
            });
            hideLoading();
        } else {
            myAlert("提示", result['message']);
        }
    })
}


